Update product
Menus
Update product
Update a product inside a composed menu from your POS or RMS.
PUT
Update product
Updates a single product within a composed menu. Use this endpoint when your POS or RMS pushes item-level changes — pricing, availability, or bundled items — without replacing the entire menu payload.
The request body uses the same menu product shape as products in Upsert menus. Send only the fields you want to change; omitted fields keep their current values.
Requires an access token with the
menus:write scope. See
Token to obtain a token.Path parameters
Query parameters
Combine scope query parameters when a product needs different
pricing or availability in one selling context — the same pattern as scoped menu upserts. Each composed menu is keyed by fulfillment_id + store_id + channel_id + brand_id + menu.id; see Menu sync.
Request body
Same shape as a product in theproducts array on Upsert menus. Every field is optional on update; omitted fields keep their current values. The product id is set in the path parameter — omit it from the request body.
products
products
Each product in the request body:
Each
availability object:Each
bundled_items entry:Example product
pricing
pricing
Product pricing in the request body:
Each object in
modifiers configures one modifier group referenced in modifier_group_ids. It accepts the same pricing fields as the parent product, plus modifier-specific fields:Example modifiers entry
Response
Returns the updated product indata — the same shape as a product in List menus, including id, name, pricing, availability, bundled_items, and metadata.
Error responses
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
External product identifier.
Required string length:
1 - 64Pattern:
^[a-zA-Z0-9_-]+$Query Parameters
External fulfillment identifier. Omit for all fulfillment types.
Required string length:
1 - 64Pattern:
^[a-zA-Z0-9_-]+$External store identifier.
Required string length:
1 - 64Pattern:
^[a-zA-Z0-9_-]+$External channel identifier.
Required string length:
1 - 64Pattern:
^[a-zA-Z0-9_-]+$External brand identifier. Alphanumeric characters, _, and - only. 1–64 characters.
Required string length:
1 - 64Pattern:
^[a-zA-Z0-9_-]+$External menu identifier. Omit to update every matching menu in the scope.
Required string length:
1 - 64Pattern:
^[a-zA-Z0-9_-]+$Body
application/json
Product fields to create or update.
Partial menu product update. Same fields as MenuProductUpsert except id (from path).
Response
200 - application/json
Ok